為了完成某一個功能的語句的集合,稱為函數
在 Go 當中可以自行定義或使用系統函數
在開發階段過程當中,有些程式碼重複性高,會將這段程式碼提領出來,放置在 func
可以幫助我們提高維護性
可以設定多個回傳值及參數
func funcName (parameterName1 type1 , parameterName2 type2) (output1 type 1,output2 type 2){
//重複性代碼
// return 代表要返回的參數
return value1,value2
}
當返回值多值,接收時希望忽略某個返回值,使用 _符號表示占位忽略
package main
import "fmt"
func main() {
a := 10
b := 50
sum := sum(a, b)
fmt.Printf("a + b 總值為%d\n", sum)
a, b = swap(a, b)
fmt.Printf("a 和 b 進行互換 a = %d , b = %d ", a, b)
var c int
//使用 _ 忽略 result2 返回值
c, _ = swap(a, b)
fmt.Println(c)
}
func sum(val1 int, val2 int) (sum int) {
return val1 + val2
}
//參數類型一直可以簡寫 parameterName1 , parameterName2 type
func swap(val1, val2 int) (result1, result2 int) {
return val2, val1
}
使用 ...type 來提供外部使用可以丟入多個參數 ( 可變參數 ),
代表可以接收多個參數
在 func 裡 agrs 為 []int 類型
package main
import "fmt"
func main() {
fmt.Printf("1 + 3 + 7 + 9 總值為:%d", sumTotal(1, 3, 5, 7, 9))
}
func sumTotal(nums ...int) (sum int) {
sum = 0
//這邊 for 循環之後章節才會詳細討論
for i := 0; i < len(nums); i++ {
sum += nums[i]
}
return sum
}
屬於值傳遞的有:
package main
import (
"fmt"
)
func main() {
arr := [...]int{1, 44, 62, 9}
fmt.Printf("調用前%v\n", arr)
test1(arr)
fmt.Printf("調用後%v\n", arr)
}
func test1(arr [4]int) {
arr[0] = 100
}
package main
import (
"fmt"
)
func main() {
arr := make([]int,5)
fmt.Printf("調用前%v\n", arr)
test1(arr)
fmt.Printf("調用後%v\n", arr)
}
func test1(arr []int) {
arr[0] = 100
}